package com.guigu.eduservice.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 砍价意向表实体类
 * 对应数据库表：bargain_intention（记录用户对设备的意向砍价信息，无助力逻辑）
 */
@Data
@TableName("bargain_intention") // 显式指定数据库表名，避免表名映射歧义
public class BargainIntention {

    /**
     * 砍价意向唯一标识（主键）
     * 对应数据库字段：bargain_id，自增策略
     */
    @TableId(type = IdType.AUTO)
    private Long bargainId;

    /**
     * 关联用户表user_id（发起砍价的买家）
     * 对应数据库字段：user_id，非空（与user表主键关联）
     */
    private Long userId;

    /**
     * 关联设备表equipment_id（目标砍价设备）
     * 对应数据库字段：equipment_id，非空（与equipment表主键关联）
     */
    private Long equipmentId;

    /**
     * 设备原价（冗余存储，避免后续设备表价格变动影响历史砍价记录）
     * 对应数据库字段：original_price，非空（DECIMAL(10,2)，匹配财务数据精度）
     */
    private BigDecimal originalPrice;

    /**
     * 用户意向砍价价格（用户期望的成交价格）
     * 对应数据库字段：intention_price，非空（DECIMAL(10,2)）
     */
    private BigDecimal intentionPrice;

    /**
     * 砍价备注（用户补充说明，如"希望尽快成交，可自提"）
     * 对应数据库字段：bargain_remark，可为空（VARCHAR(500)）
     */
    private String bargainRemark;

    /**
     * 砍价状态（0-待卖家回复，1-卖家同意，2-卖家拒绝）
     * 对应数据库字段：bargain_status，非空，默认值0
     * 建议配合枚举使用，避免硬编码（见下方内部枚举示例）
     */
    private Integer bargainStatus;

    /**
     * 卖家回复（bargain_status=1或2时填写，如"同意此价格，可随时交易"）
     * 对应数据库字段：seller_reply，可为空（VARCHAR(500)）
     */
    private String sellerReply;

    /**
     * 卖家回复时间（bargain_status变更为1或2时记录）
     * 对应数据库字段：reply_time，可为空
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime replyTime;

    /**
     * 记录创建时间（用户发起砍价的时间）
     * 对应数据库字段：create_time，非空，默认当前时间
     * 由MyBatis-Plus元数据填充器自动赋值（无需手动set）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 记录更新时间（状态变更、回复填写时自动刷新）
     * 对应数据库字段：update_time，非空，默认当前时间且更新时自动更新
     * 由MyBatis-Plus元数据填充器自动赋值
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

}